package LogicaPresentacion;

import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.ArrayList;
import java.util.Observable;
import java.util.Observer;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JInternalFrame;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.table.AbstractTableModel;

import LogicaNegocio.GestionAdministrador;
import LogicaNegocio.Pertenece;

public class verAsignaturaGrado extends JInternalFrame implements ActionListener,Observer
{
	
	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;
	private GestionAdministrador GAd;
	private JTable tbAsignaturaGrado;		
	private JButton Aceptar;
	private String Eleccion;
	private TablaAsignaturaGrado Tabla = null;
	private  JScrollPane scrollPane; 
	private JPanel jpBotones;

	public verAsignaturaGrado (GestionAdministrador GAd,String Eleccion, ClaseAObservar observable)
		{
			
			super("Ver Asignaturas que se imparten en un grado", 
		              true, 
		              false, 
		              true, 
		              true);
			setVisible(true);
			setSize(800,300);
			this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
			this.inicializarSubComponentes();
			this.Eleccion = Eleccion;
			this.GAd = GAd;
			blnCargarFormulario();
		}
		
	public void inicializarSubComponentes()
	{	
		try
		{		
			scrollPane= new JScrollPane(tbAsignaturaGrado);

			this.getContentPane().setLayout(new BorderLayout());
	        this.getContentPane().add(scrollPane,"Center");
	        
	        Aceptar=new JButton("Aceptar");
			Aceptar.addActionListener(this);
	      
	        
			jpBotones=new JPanel();
			jpBotones.setLayout(new FlowLayout());
			jpBotones.add(Aceptar);
			
			
			this.getContentPane().add(jpBotones,"South");
		}
		catch(Exception e)
		{	
		}		
	}
		
	public void actionPerformed(ActionEvent e)
	{	
		if (e.getSource() instanceof JButton) 
		{
			JButton btnPulsado=(JButton)e.getSource();

			if (btnPulsado==Aceptar) 
			{
				  dispose();
			}					
		}
	}
		
	public boolean blnCargarFormulario()
	{
		boolean blnResultado=true;
		
		crearTablaProductos();
		
		this.setLocation(200,200);
		this.setVisible(true);
		inicializarSubComponentes();
	
		return blnResultado;
	}
	
	public void crearTablaProductos()
	{		
		tbAsignaturaGrado=null;
		Tabla=new TablaAsignaturaGrado();
		Tabla.CrearTabla(GAd.GetAsignaturaGrado());
		tbAsignaturaGrado = new JTable(Tabla);
		tbAsignaturaGrado.setPreferredScrollableViewportSize(new Dimension(500, 70));
		tbAsignaturaGrado.setFillsViewportHeight(true);
		tbAsignaturaGrado.setEnabled(true);
		tbAsignaturaGrado.setRowSelectionAllowed(true);
		Tabla.fireTableDataChanged();
			
	}
	
	@Override
	public void update(Observable o, Object arg) 
	{
		tbAsignaturaGrado=null;
		Tabla.CrearTabla(GAd.GetAsignaturaGrado());
		tbAsignaturaGrado = new JTable(Tabla);
		tbAsignaturaGrado.setPreferredScrollableViewportSize(new Dimension(500, 70));
		tbAsignaturaGrado.setFillsViewportHeight(true);
		tbAsignaturaGrado.setEnabled(true);
		tbAsignaturaGrado.setRowSelectionAllowed(true);
		Tabla.fireTableDataChanged();

	}
	
 class TablaAsignaturaGrado extends AbstractTableModel
    {
 		/**
		 * 
		 */
		private static final long serialVersionUID = 8155215049396560212L;
		private String[] columnNames = {"ID_Asignatura-Grado", "Nombre de la Asignatura"," Grado al que pertence"};
		private Object[][] data;
	        
        public void CrearTabla(ArrayList<Pertenece> Perteneces)
        {        	
    		int filas = Perteneces.size();
    		data=new Object[filas][];
    		
    		if (Eleccion == "Grado")
    		{
    			Perteneces = GAd.OrdenarPerteneces(Perteneces);
    		}
    		if (Eleccion == "Por Asignatura")
    		{
    			Perteneces = GAd.OrdenarPertenecesAsignatura(Perteneces);
    		}
    		for (int cont = 0;  cont<Perteneces.size();cont++)
    		{
    			Pertenece P = (Pertenece) Perteneces.get(cont);
    			Object[]a={
    					   new String(Integer.toString(P.getID())),
    					   new String(P.GetNombreAsignatura()),
    					   new String(P.GetNombreGrado()),

    			};
    			data[cont]=a;
    		}
        }
        
       public int getColumnCount() 
        {
            return columnNames.length;
        }

        public int getRowCount() {
            return data.length;
        }

        public String getColumnName(int col) {
            return columnNames[col];
        }

        public Object getValueAt(int row, int col) {
            return data[row][col];
        } 
	}
}